2023/12/231967字符
数组排序方式
冒泡排序
- 遍历数据,将每挨着的两位进行比较,将小的一位放在前面(调换位置)
var arr = [5, 4, 3, 7, 6, 1, 9, 8, 2];
function bubbleSort(arr) {
if (arr == null || arr.length == 0) return [];
for (let i = 0; i < arr.length; i++) {
for (let j = 0; j < arr.length; j ++) {
if (arr[j] > arr[j + 1]) {
[arr[j], arr[j + 1]] = [arr[j + 1], arr[j]] // ES6 语法数据交换
}
}
}
return arr;
}
bubbleSort(arr); //--> [1, 2, 3, 4, 5, 6, 7, 8, 9]
选择排序
- 提前声明一个数,拿这个数和数组中的每一位比较,
function choiceSort(arr) {
if (arr == null || arr.length == 0) return [];
for (let i = 0; i < arr.length; i++) {
let maxIndex = 0;
for (let j = 0; j < arr.length; j++) {
maxIndex = arr[j];
if (maxIndex > arr[j + 1]) {
[arr[j], arr[j + 1]] = [arr[j + 1], maxIndex];
}
}
}
return arr;
}
choiceSort(arr); //--> [1, 2, 3, 4, 5, 6, 7, 8, 9]
标准快速排序
var arr = [4, 1, 6, 9, 3, 2, 8, 7, 5];
function quickSort(arr, begin = 0, end) {
end = end || arr.length;
if (begin >= end - 1) return;
let left = begin;
let right = end;
do {
do left ++; while (left < right && arr[left] < arr[begin]);
do right --; while (right > left && arr[right] > arr[begin]);
if (left < right) {
[ arr[left], arr[right] ] = [ arr[right], arr[left] ]; // 位置调换
}
} while (left < right);
let swapPoint = left == right ? right - 1 : right;
[ arr[begin], arr[swapPoint] ] = [ arr[swapPoint], arr[begin] ];
quickSort(arr, begin, swapPoint);
quickSort(arr, swapPoint + 1, end);
return arr;
}
console.log(quickSort(arr)); //--> [1, 2, 3, 4, 5, 6, 7, 8, 9]